﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Corretagem.Model
{
    [Serializable]
    public class InformacoesMovimento : BaseModel
    {
        #region Atributos

        private DateTime _dataMovimento;
        private DateTime? _dataVersao;
        private Model.Enum.TipoMovimento _estadoMovimento;

        #endregion Atributos

        #region Construtores

        /// <summary>
        /// Construtor padrão
        /// </summary>
        public InformacoesMovimento() { }

        /// <summary>
        /// Construtor padrão com todos os parâmetros
        /// </summary>
        /// <param name="dataMovimento">Data do movimento</param>
        /// /// <param name="dataVersao">Data da versao</param>
        /// /// <param name="estadoMovimento">Estado do movimento</param>
        public InformacoesMovimento(DateTime dataMovimento, DateTime? dataVersao, Model.Enum.TipoMovimento estadoMovimento)
        {
            this._dataMovimento = dataMovimento;
            this._dataVersao = dataVersao;
            this._estadoMovimento = estadoMovimento;
        }

        #endregion

        #region Propriedades

        /// <summary>
        /// Data do movimento
        /// </summary>
        public DateTime DataMovimento
        {
            get
            {
                return this._dataMovimento;
            }
            set
            {
                SetValue<DateTime>("DataMovimento", ref this._dataMovimento, value);
            }
        }

        /// <summary>
        /// Data da versão
        /// </summary>
        public DateTime? DataVersao
        {
            get
            {
                return this._dataVersao;
            }
            set
            {
                SetValue<DateTime?>("DataVersao", ref this._dataVersao, value);
            }
        }

        /// <summary>
        /// Estado do movimento
        /// </summary>
        public Model.Enum.TipoMovimento EstadoMovimento
        {
            get
            {
                return this._estadoMovimento;
            }
            set
            {
                SetValue<Model.Enum.TipoMovimento>("EstadoMovimento", ref this._estadoMovimento, value);
            }
        }

        #endregion
    }
}
